﻿using System;
using System.Diagnostics;
using System.Windows.Forms;
using wecker.contracts;
using wecker.gui.contracts;

namespace wecker.gui {
    public partial class Gui : Form, IEntryPoint, IGui {
        public Gui() {
            InitializeComponent();
        }

        public event Action Alarm_ausschalten;
        public event Action<DateTime> Weckzeit_setzen;
        public event Action<DateTime> Verzögerung_setzen;

        public void Display(ViewModelWecker viewmodel) {
            Trace.TraceInformation("wecker.gui.Gui.Display aufgerufen mit {0}", viewmodel);

            // dtpWeckzeit.Value = viewmodel.Weckzeit;
            // dtpVerzögerung.Value = viewmodel.Verzögerung;
            labUhrzeitWert.Text = viewmodel.AktuelleUhrzeit.ToString("HH.mm.ss");
            // labZeitBisAlarm.Text = viewmodel.ZeitBisAlarm.ToString("HH.mm.ss");

            dtpWeckzeit.Enabled = viewmodel.Zustand == Zustand.Uhr;
            buWeckzeitSetzen.Enabled = viewmodel.Zustand == Zustand.Uhr;
            dtpVerzögerung.Enabled = viewmodel.Zustand == Zustand.Uhr;
            buVerzögerungSetzen.Enabled = viewmodel.Zustand == Zustand.Uhr;
            buAlarmAbstellen.Enabled = viewmodel.Zustand != Zustand.Uhr;
        }

        public void Run(string[] args) {
            ShowDialog();
        }

        private void buWeckzeitSetzen_Click(object sender, EventArgs e) {
            Trace.TraceInformation("Feure Event Weckzeit_setzen");
            Weckzeit_setzen(dtpWeckzeit.Value);
        }

        private void buVerzögerungSetzen_Click(object sender, EventArgs e) {
            Trace.TraceInformation("Feure Event Verzögerung_setzen");
            Verzögerung_setzen(dtpWeckzeit.Value);
        }

        private void buAlarmAbstellen_Click(object sender, EventArgs e) {
            Trace.TraceInformation("Feure Event AlarmAbstellen");
            Alarm_ausschalten();
        }
    }
}
